Programming Assignment Policies
1 Purpose of Programming Assignments in this Course
In this course, programming assignments are primarily an
instructional mechanism, not an assessment mechanism. Nonetheless,
programming assignments will be graded and, in fact, will be graded
strictly. There are two reasons for this. First, the grades will
provide you with an assessment of how well you know the
material. Second, experience has shown that beginning Computer Science
students do not always make decisions that are in their own best
interest, and often do not complete ungraded assignments.
In other words, in this course, programming assignments are designed
to: (1) help you learn the materials; (2) help you understand what you
have and have not learned; and (3) encourage you to do the work that
is necessary for learning to occur.
2 Collaboration
Different courses have different policies about collaboration
on programming programming assignments. This document describes the
policy for Prof. Bernstein's sections of this course during this semester
only. Be careful to understand and comply with the policies
that are in place for your other courses.
Failure to comply with these policies is a violation of the
JMU Honor Code. Automated tools (like, for example,
Moss) may
be used on any submission (including "early" submissions), at
any time, to detect violations of this policy.
2.1 Rationale for the Collaboration Policy
Unambiguously, the best way for you to achieve the second
objective above is for you to complete programming assignments
entirely on your own, occasionally asking questions of a general
nature (i.e., about the topics you need to understand in order
to complete the assignment but not specifics about the assignment
itself). However, for some students, collaboration aids in
achieving the first objective.
2.2 Allowed Interactions
You may discuss programming assignments with the instructor(s)
for this course, instructors for other courses, and other
students currently enrolled in this course.
2.3 Inappropriate Interactions
You must not discuss programming assignments with students
who are not currently enrolled in this course,
including
lab/teaching assistants.
Also, you must not discuss programming assignments with tutors
of any kind – paid or volunteer, local or remote. Similarly, you
must not use code from any source, whether human (e.g.,
"mechanical turk") or not (e.g., AI-based code generators), that
was created based on information that is specific to the
assignment (e.g., specifications, function/method/class
declarations). When in doubt, assume that code obtained from the
Internet must not be used.
Finally, you must not make your solutions to programming
assignments available in any form on any WWW sites, solution
archives, etc... and you must not get your solutions from such
sites (though you may use fragments of code that you find on the WWW).
2.4 Recommended Interactions
You are strongly encouraged to discuss the assignment only with
the instructor(s), and to submit work that is entirely your own.
Assistance can be a crutch that actually hinders learning. You
will be much more successful at learning the material in this
course if you complete the programming assignments independently
[with, perhaps, assistance from the instructor(s)]. Though you
may lose some points on the programming assignments if you take
this approach, it will almost certainly help you on exams (which
are a much larger portion of the final grade).
2.5 Courtesy/Etiquette
Though you are entitled to discuss the programming assignments
with other people, you must be courteous.
Most importantly, other students in the course are not required, or even
encouraged, to provide assistance. So, if asked, you should feel
free to decline such a request and, if asking, you must not take
offense if such a request is denied.
In addition, the instructor(s) may not provide as much
assistance as you want. Most frequently, this happens when they
think the assistance you have requested will prevent you from
learning an important concept. Sometimes, this happens when they
think you are using too much of their time. Again, you must not
take offense if a request is denied.
3 Submission
Obviously, all of the programming assignments will involve the
construction of code. The code must be submitted electronically using
Gradescope.
In addition, parts of some programming assignments may require you
to answer questions of various kinds. These parts must be
submitted using Canvas.
3.1 Number of Gradescope Submissions
Gradescope is a submission tool, not a testing tool. That is, it
tests your code for purposes of assessment, not to verify the
correctness of your code and not to help you debug your
code. Testing and debugging are an important part of the
software engineering process, and you must be able to test and
debug software in order to succeed in this course (not to
mention subsequent courses and as a practicing
programmer/software engineer).
To prevent you from relying on Gradescope too heavily, individual
assignments may have a maximum number of submissions (perhaps
after a certain date) and/or points may be deducted for each
submission.
You are responsible for knowing the submission rules for each
assignment. In general, your last submission is the one that
will be graded.
3.2 Timing of Gradescope Submissions
You are responsible for ensuring that your assignments are
submitted on time. You should be aware that electronic
submission systems may only be able to process a few submissions
per minute. This means that, when there are hundreds of students
in different courses submitting at the same time, it might take
an hour or more for a submission to be processed.
Your submission must be processed/checked by Gradescope before the
time that it is due. It is not enough to have it "in the
queue" before the deadline.
In other words, you must recognize that the system might be
severely congested and submit your code early enough that the
processing time will not be a problem. (This is not unlike a
situation in which you need to be someplace at a specific time
and you know that the roads might be congested. You are
responsible for departing early enough; you must select a
departure time that accounts for the congestion.)
4 Grading
Points will be deducted for a variety of reasons, including:
incorrect answers, failing the tests conducted as part of the
electronic submission process, failing to conform to the course
style guide, failing to be properly documented, poor design, poor
implementation, and inelegance. Each assignment will include a
description of the criteria that will be used for it.
Some criteria will be graded by the submission system (when you
submit) and others will be graded by the instructor after the
due date. Note that the grade awarded by the submission system is an
estimate, not a guarantee. In other words, the grade awarded by
the submission system may be modified by the instructor.
Unless stated otherwise, programming assignments must be submitted
on or before the due date and time. Programming assignments submitted
after the due date/time will not be accepted.
5 Definitions
Terms, equations, concepts, etc... often have multiple definitions.
Whenever there is any ambiguity, you must use the definitions that
are provided with the assignment.